package com.briup.day06;

import java.util.Random;

public class Homework2 {
    public static void main(String[] args) {
        /*
            随机生成一个4位数的验证码，要求验证码中包含大小写字母和数字
         */
        // 先指定验证码字符的出处
        String str = "qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM";
        char[] verifyCode = new char[4];
        Random random = new Random();
        String s = null;
        // 正则表达式：用于匹配字符串是否符合某一种规则的表达式
        // \d在正则表达式中标识为匹配0-9之间的数字，{4}表示前面的内容匹配4个字符位
        // ^表示以什么开头，$表示以什么结尾
        String regex = "^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{4}$";
        boolean flag = true;
        while (flag) {
            for (int i = 0; i < verifyCode.length; i++) {
                // 使用随机数，在字符串的长度范围内获取随机数，使用该随机数作为字符串内字符的下标
                int index = random.nextInt(str.length());
                verifyCode[i] = str.charAt(index);
            }
            // 如果要保证生成出来的验证码，每一次都必须包含大小字母，数字
            s = new String(verifyCode);
            // matches()方法，用于判断你使用的字符串对象的内容，是否符合你传入的正则表达式的要求
            if (s.matches(regex)) {
                flag = false;
            }
        }
        System.out.println(s);
    }
}
